#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;
const int N=2*1e5+10;

int dp[N];
int main()
{
	unordered_set<string> has;
	string s;
	int maxlen=0;
	while(cin>>s && s!=".")
	{
		has.insert(s);
		maxlen=max(maxlen,(int)s.size());
	}
	string str;
	string t;
	while(cin>>t)
	{
		str+=t;
	}
	str=' '+str;
	dp[0]=1;
	int p=0;
	for(int i=1;i<str.size();i++)
	{
		for(int j=min(i,maxlen);j>=1;j--)
		{
			string t=str.substr(i-j+1,j);
			if(has.count(t) && dp[i-j])
			{
				dp[i]=1;
				p=i;
				break;
			}
		}
	}

    
	cout<<p<<endl;
	return 0;
}
